package com.hairysoft.alarm; import android.app.Activity; import android.content.SharedPreferences; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import com.hairysoft.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.ImageButton; import android.widget.VideoView; import com.hairysoft.cockcrow.R; import com.hairysoft.util.Constants; import java.io.IOException; /** * Activity for the Alarm going off */ public class AlarmActivity extends Activity { private static final String TAG = "AlarmActivity"; private VideoView vv; private MediaPlayer ringtone; private GestureDetector mGestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Enable the activity to run over even a locked screen, and in fullscreen this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); setContentView(R.layout.activity_alarm); // Detect fling movement on the cat in the middle mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { Log.d(TAG, "Fling detected"); finish(); return true; } }); // Attach gesture detector ((ImageButton) findViewById(R.id.buBye)).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return mGestureDetector.onTouchEvent(event); } }); } @Override protected void onStop() { super.onStop(); vv.stopPlayback(); ringtone.stop(); ringtone.release(); } @Override protected void onStart() { super.onStart(); startAlarm(); } private void startAlarm() { vv = (VideoView) findViewById(R.id.videoView); vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); // Keep the video on continuous loop } }); // Load the video from internal APK resources Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.wake_up_dance); vv.setVideoURI(video); vv.start(); // Load Alarm sound from shared preferences SharedPreferences prefs = getSharedPreferences(Constants.PREFS_NAME, MODE_PRIVATE); String notySoundUri = prefs.getString("noty_sound_uri", RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM).toString()); SharedPreferences.Editor editor = prefs.edit(); editor.remove("alarm_time"); editor.commit(); try { // Play alarm tone in a continuous loop ringtone = new MediaPlayer(); ringtone.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); ringtone.setDataSource(getApplicationContext(), Uri.parse(notySoundUri)); ringtone.setLooping(true); ringtone.setAudioStreamType(AudioManager.STREAM_ALARM); ringtone.prepareAsync(); } catch(IOException ex) { } } }